package com.cardone.platform.usercenter.service;

import java.util.List;
import java.util.Map;

import com.cardone.common.cache.support.CacheEvictSupport;
import com.cardone.common.dto.PaginationDto;
import com.cardone.platform.usercenter.dto.OrgDto;

/**
 * 部门服务
 * 
 * @author yaoht
 */
public interface OrgService extends CacheEvictSupport {
	/**
	 * spring bean id
	 */
	String BEAN_ID = "com.cardone.platform.usercenter.service.OrgService";

	/**
	 * 保存:组织
	 * 
	 * @param saveOrg
	 *            组织对象
	 * 
	 * @return 组织对象
	 */
	OrgDto saveOrgByIdOrCode(OrgDto saveOrg);

	/**
	 * 保存:组织
	 * 
	 * @param saveOrg
	 *            组织对象
	 * 
	 * @return 组织对象
	 */
	OrgDto saveOrgByName(OrgDto saveOrg);

	/**
	 * 删除:组织
	 * 
	 * @param deleteOrg
	 *            组织对象
	 * 
	 * @return 影响行数
	 */
	int deleteOrgByCode(OrgDto deleteOrg);

	/**
	 * 删除:组织
	 * 
	 * @param deleteOrg
	 *            组织对象
	 * 
	 * @return 影响行数
	 */
	int deleteOrgByIds(OrgDto deleteOrg);

	/**
	 * 设置:组织
	 * 
	 * @param updateOrg
	 *            组织对象
	 * 
	 * @return 影响行数
	 */
	int updateOrgByCode(OrgDto updateOrg);

	/**
	 * 设置:组织
	 * 
	 * @param updateOrg
	 *            组织对象
	 * 
	 * @return 影响行数
	 */
	int updateOrgByIds(OrgDto updateOrg);

	/**
	 * 读取:组织
	 * 
	 * @param readOrg
	 *            组织对象
	 * 
	 * @return 组织对象
	 */
	Integer readOrgByCodeNqId(OrgDto readOrg);

	/**
	 * 读取:组织
	 * 
	 * @param readOrg
	 *            组织对象
	 * 
	 * @return 组织对象
	 */
	Integer readOrgByName(OrgDto readOrg);

	/**
	 * 查询:组织
	 * 
	 * @param findOrg
	 *            组织对象
	 * 
	 * @return 组织对象
	 */
	OrgDto findOrgByCode(OrgDto findOrg);

	/**
	 * 查询:组织
	 * 
	 * @param findOrg
	 *            组织对象
	 * 
	 * @return 组织对象
	 */
	OrgDto findOrgById(OrgDto findOrg);

	/**
	 * 查询:组织
	 * 
	 * @param findListOrg
	 *            组织对象
	 * 
	 * @return 组织对象集合
	 */
	List<OrgDto> findListOrgByCode(OrgDto findListOrg);

	/**
	 * 查询:组织
	 * 
	 * @param findListOrg
	 *            组织对象
	 * 
	 * @return 组织对象集合
	 */
	List<OrgDto> findListOrgByName(OrgDto findListOrg);

	/**
	 * 分页:组织
	 * 
	 * @param paginationOrg
	 *            组织对象
	 * 
	 * @return 组织分页对象
	 */
	PaginationDto<OrgDto> paginationOrgByCode(OrgDto paginationOrg);

	/**
	 * 分页:组织
	 * 
	 * @param paginationOrg
	 *            组织对象
	 * 
	 * @return 组织分页对象
	 */
	PaginationDto<Map<String, Object>> paginationOrgByName(OrgDto paginationOrg);
}